import 'dart:developer';

class JMNetLogUtil {
  /// 默认日志TAG
  static const String _tagDef = "JMNet";

  /// 是否打开输出日志
  static bool isOpenLog = true;

  /// 日志TAG
  static String tag = _tagDef;

  /// 运行在Release环境时，inProduction为true；
  /// 当App运行在Debug和Profile环境时，inProduction为false。
  static const bool inProduction = bool.fromEnvironment("dart.vm.product");

  /// 初始化log
  /// * [isOpen] 是否打开日志
  /// * [tag] tag标识
  static void init({bool isOpen = false, String tag = _tagDef}) {
    isOpenLog = isOpen;
    tag = tag;
  }

  /// 打印INFO日志
  /// * [object] 打印object内容
  /// * [tag] tag标识
  static void i(Object object, {String tag = _tagDef}) {
    _printLog(tag, '[I]💡', object);
  }

  /// 打印警告日志
  /// * [object] 打印object内容
  /// * [tag] tag标识
  static void w(Object object, {String tag = _tagDef}) {
    _printLog(tag, '[W]❗️', object);
  }

  /// 打印错误日志
  /// * [object] 打印object内容
  /// * [tag] tag标识
  static void e(Object object, {String tag = _tagDef}) {
    _printLog(tag, '[E]❌', object);
  }

  /// 打印debug日志
  /// * [object] 打印object内容
  /// * [tag] tag标识
  static void d(Object object, {String tag = _tagDef}) {
    _printLog(tag, "[D]🐛", object);
  }

  // 输出日志
  static void _printLog(String tag, String stag, Object object) {
    if (!isOpenLog || inProduction) return;

    log('------ $tag $stag ---------------------------------------\n${object.toString()}');
  }
}
